<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
  <title>Description of v_lpccc2ff</title>
  <meta name="keywords" content="v_lpccc2ff">
  <meta name="description" content="V_LPCCC2FF Convert complex cepstrum to complex spectrum FF=(CC,NP,NC)">
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
  <meta name="robots" content="index, follow">
  <link type="text/css" rel="stylesheet" href="../m2html.css">
</head>
<body>
<a name="_top"></a>
<div><a href="../index.html">Home</a> &gt;  <a href="index.html">v_mfiles</a> &gt; v_lpccc2ff.m</div>

<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
<td align="right"><a href="index.html">Index for v_mfiles&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->

<h1>v_lpccc2ff
</h1>

<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>V_LPCCC2FF Convert complex cepstrum to complex spectrum FF=(CC,NP,NC)</strong></div>

<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>function [ff,f]=v_lpccc2ff(cc,np,nc,c0) </strong></div>

<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre class="comment">V_LPCCC2FF Convert complex cepstrum to complex spectrum FF=(CC,NP,NC)

  Inputs: cc(nf,n)     Complex ceptral coefficients excluding c(0), one frame per row
          np           Size of output spectrum is np+1 [n]
                       Alternatively, a vector of output frequencies in the range 0 to 0.5
          nc           Number of cepstral coefficients to use [np or, if np is a vector, n]
                       Set nc=-1 to use n coefficients
          c0(nf,1)     Cepstral coefficient c(0) [0]

 Outputs: ff(nf,np+2)  Complex spectrum from DC to Nyquist
          f(1,np+2)    Normalized frequencies (0 to 0.5)

 The &quot;complex cepstral coefficients&quot;, cc(n), are the inverse discrete-time Fourier transform
 of the log of the complex-valued spectrum. The cc(n) are real-valued and, for n&lt;0, cc(n)=0.
 The &quot;real cepstral coeffcients&quot;, rc(n), are the inverse discrete-time Fourier transform
 of the log of the magnitude spectrum; rc(0)=cc(0) and rc(n)=0.5*cc(n) for n~=0. 
 For highest speed, choose np+1 to be a power of 2.</pre></div>

<!-- crossreference -->
<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
This function calls:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="v_lpccc2cc.html" class="code" title="function c=v_lpccc2cc(cc,np)">v_lpccc2cc</a>	V_LPCCC2PF Extrapolate complex cepstrum C=(CC)</li><li><a href="v_rfft.html" class="code" title="function y=v_rfft(x,n,d)">v_rfft</a>	V_RFFT     Calculate the DFT of real data Y=(X,N,D)</li></ul>
This function is called by:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="v_lpcpf2ff.html" class="code" title="function [ff,fo]=v_lpcpf2ff(pf,np,fi)">v_lpcpf2ff</a>	V_LPCPF2FF Convert power spectrum to complex spectrum [FF,FO]=(PF,NP,FI)</li></ul>
<!-- crossreference -->


<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [ff,f]=v_lpccc2ff(cc,np,nc,c0)</a>
0002 <span class="comment">%V_LPCCC2FF Convert complex cepstrum to complex spectrum FF=(CC,NP,NC)</span>
0003 <span class="comment">%</span>
0004 <span class="comment">%  Inputs: cc(nf,n)     Complex ceptral coefficients excluding c(0), one frame per row</span>
0005 <span class="comment">%          np           Size of output spectrum is np+1 [n]</span>
0006 <span class="comment">%                       Alternatively, a vector of output frequencies in the range 0 to 0.5</span>
0007 <span class="comment">%          nc           Number of cepstral coefficients to use [np or, if np is a vector, n]</span>
0008 <span class="comment">%                       Set nc=-1 to use n coefficients</span>
0009 <span class="comment">%          c0(nf,1)     Cepstral coefficient c(0) [0]</span>
0010 <span class="comment">%</span>
0011 <span class="comment">% Outputs: ff(nf,np+2)  Complex spectrum from DC to Nyquist</span>
0012 <span class="comment">%          f(1,np+2)    Normalized frequencies (0 to 0.5)</span>
0013 <span class="comment">%</span>
0014 <span class="comment">% The &quot;complex cepstral coefficients&quot;, cc(n), are the inverse discrete-time Fourier transform</span>
0015 <span class="comment">% of the log of the complex-valued spectrum. The cc(n) are real-valued and, for n&lt;0, cc(n)=0.</span>
0016 <span class="comment">% The &quot;real cepstral coeffcients&quot;, rc(n), are the inverse discrete-time Fourier transform</span>
0017 <span class="comment">% of the log of the magnitude spectrum; rc(0)=cc(0) and rc(n)=0.5*cc(n) for n~=0.</span>
0018 <span class="comment">% For highest speed, choose np+1 to be a power of 2.</span>
0019 
0020 <span class="comment">%      Copyright (C) Mike Brookes 2014</span>
0021 <span class="comment">%      Version: $Id: v_lpccc2ff.m 10865 2018-09-21 17:22:45Z dmb $</span>
0022 <span class="comment">%</span>
0023 <span class="comment">%   VOICEBOX is a MATLAB toolbox for speech processing.</span>
0024 <span class="comment">%   Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html</span>
0025 <span class="comment">%</span>
0026 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
0027 <span class="comment">%   This program is free software; you can redistribute it and/or modify</span>
0028 <span class="comment">%   it under the terms of the GNU General Public License as published by</span>
0029 <span class="comment">%   the Free Software Foundation; either version 2 of the License, or</span>
0030 <span class="comment">%   (at your option) any later version.</span>
0031 <span class="comment">%</span>
0032 <span class="comment">%   This program is distributed in the hope that it will be useful,</span>
0033 <span class="comment">%   but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
0034 <span class="comment">%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
0035 <span class="comment">%   GNU General Public License for more details.</span>
0036 <span class="comment">%</span>
0037 <span class="comment">%   You can obtain a copy of the GNU General Public License from</span>
0038 <span class="comment">%   http://www.gnu.org/copyleft/gpl.html or by writing to</span>
0039 <span class="comment">%   Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.</span>
0040 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
0041 [nf,mc]=size(cc);
0042 <span class="keyword">if</span> nargin&lt;2 || ~numel(np)
0043     <span class="keyword">if</span> nargout
0044         np=mc;
0045     <span class="keyword">else</span>
0046         np=128;
0047     <span class="keyword">end</span>
0048 <span class="keyword">end</span>
0049 <span class="keyword">if</span> nargin&gt;=3 &amp;&amp; numel(nc)==1 &amp;&amp; nc==-1 nc=mc; <span class="keyword">end</span>
0050 <span class="keyword">if</span> nargin&lt;4 || ~numel(c0) c0=zeros(nf,1); <span class="keyword">end</span>
0051 <span class="keyword">if</span> numel(np)&gt;1 || np(1)&lt;1
0052     <span class="keyword">if</span> nargin&lt;3 || ~numel(nc) nc=mc; <span class="keyword">end</span>
0053     f=np(:)';
0054     <span class="keyword">if</span> nc==mc
0055         ff=exp([c0 cc]*exp(-2i*pi*(0:mc)'*f));
0056     <span class="keyword">else</span>
0057         ff=exp([c0 lpccc2cc(cc,nc)]*exp(-2i*pi*(0:nc)'*f));
0058     <span class="keyword">end</span>
0059 <span class="keyword">else</span>
0060     <span class="keyword">if</span> nargin&lt;3 || ~numel(nc) nc=np; <span class="keyword">end</span>
0061     <span class="keyword">if</span> nc==mc
0062         ff=exp(<a href="v_rfft.html" class="code" title="function y=v_rfft(x,n,d)">v_rfft</a>([c0 cc].',2*np).');
0063     <span class="keyword">else</span>
0064         ff=exp(<a href="v_rfft.html" class="code" title="function y=v_rfft(x,n,d)">v_rfft</a>([c0 <a href="v_lpccc2cc.html" class="code" title="function c=v_lpccc2cc(cc,np)">v_lpccc2cc</a>(cc,nc)].',2*np).');
0065     <span class="keyword">end</span>
0066     f=linspace(0,0.5,np+1);
0067 <span class="keyword">end</span>
0068 <span class="keyword">if</span> ~nargout
0069     subplot(2,1,2);
0070     plot(f,unwrap(angle(ff.')));
0071     xlabel(<span class="string">'Normalized frequency f/f_s'</span>);
0072     ylabel(<span class="string">'Phase (rad)'</span>);
0073     subplot(2,1,1);
0074     plot(f,db(abs(ff.')));
0075     xlabel(<span class="string">'Normalized frequency f/f_s'</span>);
0076     ylabel(<span class="string">'Gain (dB)'</span>);
0077 <span class="keyword">end</span>
0078</pre></div>
<hr><address>Generated by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
</body>
</html>